//对AXIOS进行二次封装：
/*
* 为什么要对AXIOS进行二次封装？
* 请求拦截器、响应拦截器。
* 请求拦截器：可以在请求发送之前处理一些业务。
* 响应拦截器：当服务器数据返回后，可以先处理一些业务。
* */

// 引入axios
import axios from "axios";
// 引入进度条
import nprogress from "nprogress";
import "nprogress/nprogress.css";

const request = axios.create({
    baseURL:"http://127.0.0.1:80/client",
    timeout:5000
})

// 请求拦截器
request.interceptors.request.use((config)=>{
    // config：配置对象，对象里面有一个属性很重要
    // headers：请求头
    nprogress.start();
    if (window.localStorage.getItem("TOKEN")){
        config.headers.AccessToken = window.localStorage.getItem("TOKEN");
    }
    return config;
})

// 响应拦截器
request.interceptors.response.use((res)=>{
    nprogress.done();
    return res.data;
}, (error) => {
    return Promise.reject(new Error("fail"));
});

export default request;